package com.nurt.controller.order;

import com.nurt.service.OrderService;
import com.nurt.service.impl.OrderServiceImpl;
import com.nurt.utils.ServletHelper;
import com.alibaba.fastjson2.JSONObject;
import com.nurt.dto.ResultDto;
import com.nurt.entity.OrderEntity;

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.IOException;
import java.util.List;

// 步骤6.1：在 OrderController 类上添加 @WebServlet 注解，修改 @WebServlet 注解的 urlPatterns 属性值
// @WebServlet(urlPatterns = {"/orders/*"})
// HttpServlet 类是 Java Servlet API 的核心类，它是一个抽象类，负责处理客户端请求并返回响应。
// OrderController 类继承了 HttpServlet 类，因此 OrderController 类可以处理客户端的请求。
public class OrderController extends HttpServlet {

    // 步骤6.2：添加 OrderService 类型的 orderService 成员变量
    // private OrderService orderService;

    // 步骤6.3：在 OrderController 类中添加 init() 方法
    public void init() {
        // 步骤6.4：在 init() 方法中实例化 orderService 对象
        // orderService = new OrderServiceImpl();
    }

    // 步骤6.5：重写 doGet() 方法
    // doGet() 方法用于处理客户端发送的 GET 请求
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 步骤6.6：在 doGet() 方法中获取请求路径信息
        // request是客户端请求的HttpServletRequest对象，getPathInfo()方法用于获取请求路径信息
        // String pathInfo = request.getPathInfo();
        // 步骤6.7：在 doGet() 方法中根据请求路径信息处理请求
        // String[] pathParts = pathInfo.split("/");
        // String userId = pathParts[1];
        // 步骤6.8：在 doGet() 方法中获取请求参数
        // request.getParameter()方法用于获取请求参数
        // String status = request.getParameter("status");

        // 步骤6.9：在 doGet() 方法中设置响应内容类型和字符编码
        // response.setContentType("application/json");
        // response.setCharacterEncoding("UTF-8");

        // 步骤6.10：在 doGet() 方法中根据请求路径信息和请求参数处理请求
        // if (status != null) {
            // 步骤6.11：调用 orderService.getOrderByStatus() 方法获取订单信息
        //     OrderEntity order = orderService.getOrderByStatus(Integer.parseInt(userId), Integer.parseInt(status));
            // 步骤6.12：设置响应状态码和响应内容
        //     response.setStatus(HttpServletResponse.SC_OK);
            // 步骤6.13：将订单信息写入响应
            // ResultDto.success()方法用于返回成功的响应结果
        //     response.getWriter().write(ResultDto.success(order));
        // } else {
        //     List<OrderEntity> orders = orderService.getOrders(Integer.parseInt(userId));
        //     response.setStatus(HttpServletResponse.SC_OK);
            // 步骤6.14：将订单列表写入响应
            // ResultDto.success()方法用于返回成功的响应结果
        //     response.getWriter().write(ResultDto.success(orders));
        // }
    }

    // 步骤6.15：重写 doPost() 方法
    // doPost() 方法用于处理客户端发送的 POST 请求
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 步骤6.16：在 doPost() 方法中获取请求体数据
        // getRequestBodyAsJson()方法用于获取请求体数据
        // JSONObject对象用于解析请求体数据
        // JSONObject jsonObject = ServletHelper.getRequestBodyAsJson(request);
        // JSONObject对象的getIntValue()方法用于获取请求体中的字段值
        // int userId = jsonObject.getIntValue("userId");
        // 步骤6.17：在 doPost() 方法中创建订单对象
        // 步骤6.18：在 doPost() 方法中设置订单对象的属性
        // 步骤6.19：在 doPost() 方法中调用 orderService.createOrder() 方法创建订单
    }

    // 步骤6.20：重写 doPut() 方法
    protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 步骤6.21：在 doPut() 方法中获取请求路径信息
        // String pathInfo = request.?;
        // String[] pathParts = pathInfo.split("/");
        // String orderId = ?;

        // 步骤6.22：在 doPut() 方法中获取请求体数据
        // JSONObject jsonObject = ServletHelper.getRequestBodyAsJson(request);
        // int status = jsonObject.getIntValue("status");

        // 步骤6.23：在 doPut() 方法中调用 orderService.updateOrderStatus() 方法更新订单状态
    }
}
